1、配置linux bond
a)、加载bonding模块

# 对于CentOS系统默认会加载bonding模块，我们也可以使用root用户手动加载模块**
# 临时加载模块，重启失效。
modprobe --first-time bonding
# 永久加载模块
modprobe bonding 
 
# 查看模块信息
modinfo bonding
b)、配置bond

b-1)、创建bond接口，在 /etc/sysconfig/network-scripts/ 目录中创建名为 ifcfg-bondN 的文
件，使用接口号码替换 N，比如 0

### 创建bond接口
# vim /etc/sysconfig/network-scripts/ifcfg-bond0
 
DEVICE=bond0          //和文件名中的ifcfg-bond0中的bond0是一致的。
NAME=bond0            //设备名字，为了NetworkManage方便管理，和DEVICE保持一致
TYPE=Bond             //TYPE要设置成Bond，表示该接口为bond接口
BONDING_MASTER=yes       
IPADDR=192.168.1.1   
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=4 miion=100"  //bond选项，引号里面的内容，需要配置，这里配置了之后，就不需要配置
b-2)、修改物理接口的配置文件

### vim /etc/sysconfig/network-scripts/ifcfg-em1
 
DEVICE=em1
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
MASTER=bond0                                  // 
SLAVE=yes                                    //
BOOTPROTO=none
同样的修改物理网卡，em2.

b-3)、验证、查看bond

### 查看bond0的绑定结果
[root@control1 network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: em1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
 
Slave Interface: em1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: b8:ca:3a:6c:49:68
Slave queue ID: 0
 
Slave Interface: em2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: b8:ca:3a:6c:49:6a
Slave queue ID: 0
#######到这里，我们的bond可以直接用了，如果想将bond绑定到ovs上面，可以看下面的步骤########

2、将bond绑定到ovs上面（可选）
a)、前置条件

### 安装openvswitch 
yum install -y openvswitch
systemctl enable openvswitch
systemctl start openvswitch
b)、配置网卡

b-1)、修改bond网卡

###
# vim /etc/sysconfig/network-scripts/ifcfg-bond0
 
DEVICE=bond0
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
MACADDR="b8:ca:3a:6c:46:b0"
BONDING_OPTS="mode=802.3ad miimon=100"
MTU=9000
b-2)、创建br-ex，并定义br-ex为ovs虚拟网桥。

###
# vim /etc/sysconfig/network-scripts/ifcfg-br-ex
 
DEVICE=br-ex
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
DEVICETYPE=ovs
TYPE=OVSBridge
MTU=9000
OVS_EXTRA="set bridge br-ex fail_mode=standalone"
四、bond模式
1、模式0
模式0（mode=0，round-robin）：此模式使用轮询策略，即顺序的在每一个被bond的网卡上发送数据包，这种模式提供负载均衡和容错能力。Bond0可以保证bond虚拟网卡和被bond的两张或多张物理网卡拥有相同的MAC地址，其中bond虚拟网卡的MAC地址是其中一张物理网卡的MAC地址，而bond虚拟网卡的MAC地址是根据bond自己实现的一个算法来选择的。
在bond0模式下，如果一个连接或者会话的数据包从不同的网口发出，途中再经过不同的链路，则在客户端很有可能会出现数据包无序到达的现象，而无序到达的数据包一般需要重新发送，这样网络的吞吐量就会下降。同时，如果做bond0的两张或多张网卡接到了同一交换机上，还需对其配置聚合模式。

2、模式1
​ 模式1（mode=1，active-backup）：此模式使用主被策略（热备）。在所有做bond1的物理网卡中，同一时刻只有一张网卡被激活，当且仅当活动网卡失效时才会激活其他的网卡。这种模式下做bond的两张或多张网卡的MAC地址和Bond虚拟网卡的MAC地址相同，而Bond的MAC地址是Bond创建启动后活动网卡（Active Slave）的MAC地址。这种模式要求主被网卡能快速的切换，即当主网卡出现故障后能迅速地切换至备用网卡。切换过程中，上层的应用几乎不受影响，因为Bond的驱动程序会临时接管上层应用的数据包，存放至数据缓冲区，等待备用网卡启动后再发送出去。但是如果切换时间过长，则会引起缓冲区的溢出，导致丢包。

3、模式2
 模式2（mode=2，balance-xor）：xor为异或运算(二进制位相异为1，相同为0)。此模式的默认选择策略是：
选择网卡的序号=(源MAC地址 XOR 目标MAC地址) % Slave网卡（从网卡）的数量。
其他的传输策略可以通过xmit_hash_policy配置项指定。

4、模式3
​ 模式3（mode=3，broadcast）：使用广播策略，数据包会被广播至所有Slave网卡进行传送。

5、模式4
模式4（mode=4，802.3ad）：使用动态链接聚合策略，启动时会创建一个聚合组，所有Slave网卡共享同样的速率和双工设定。

必要条件：
1．支持使用ethtool工具获取每个slave网卡的速率和双工设定；
2．需要交换机支持IEEE 802.3ad 动态链路聚合（Dynamic link aggregation）模式

6、模式5
模式5（mode=5，balance-tlbtransmitload balancing）：基于每个slave网卡的速率选择传输网卡。
必要条件：支持使用ethtool工具获取每个slave网卡的速率。

7、模式6
模式6（mode=6，balance-alb，Adaptive load balancing）：该模式包含了bond5模式，同时还支持对IPV4流量接收时的负载均衡策略(receive load balance, rlb)，而且不需要任何交换机的支持。
必要条件：

ethtool支持获取每个slave的速率；
底层驱动支持设置某个网卡设备的硬件地址。
五、如何选择bond 模式
配置bond 模式主要是为了和交换机做协商。一般交换机支持LACP链路聚合，交换机的LACP又分为静态和动态。下面是交换机的两种聚合方式介绍：

####################################
 
1，静态：
 
mode on，手动强制模式：
  不发送也不接收LACP协商报文，交换机物理端口被强制捆绑到etherchannel，数据包根据聚合口负载均衡模式在多个物理口上传输。一般默认的为基于包的负载均衡，即在多个网口之间轮询发送数据包。使用这种聚合模式时，对端也必须是mode on，强制形成etherchannel。
 
########################################
2，动态：
active，主动协商模式：
  交换机聚合口主动发出LACPDU报文，与对端符合802.3ad规范的动态聚合口主动协商。
  一般推荐使用主动模式。
passive，被动协商模式：
  交换机聚合口只接收LACPDU报文，被动与对端符合802.3ad规范的动态聚合口进行协商。
问题：那么服务器的bond 和交换机的链路聚合是如何匹配的？
————————————————
版权声明：本文为CSDN博主「junltianx79」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
原文链接：https://blog.csdn.net/m0_37740029/article/details/121771903
